闲扯
出了一个玄学问题,结果 $JKLover$ 帮我找了半天的错。。
题面
Solution
考虑李超线段树。
对于线段树的每一个区间,我们记录该区间的优势线段。
$ps:$ 优势线段是指在该区间内满足所有线段都不超过它的线段
对于插入线段,我们进行如下讨论:
- 若该区间还没有优势线段,将其修改为当前线段,然后直接返回。
- 若该区间的优势线段被当前线段完全盖过,将其修改为当前线段,然后直接返回。
- 若该区间的优势线段将当前线段完全盖过,直接返回。
- 否则递归进入左右区间。
但是需要注意的是,我们使用了标记永久化的方式,即我们不用上传懒标记。在每一次查询的时候,我们一次遍历所有包含 $pos$ 的区间,然后求出其中的最大值(或者最小值)最为最后的答案。
这道题里面需要注意的是:我们已知的是第一天的收益,和随后的增长,所以计算的时候要将 $S$ 减去一个 $P$ 才是我们真正要求的 $k,b$ 。
Code
1 |
|
总结
$scanf$ 传入参数的时候是从后往前传的,如果用 $++cnt$ 的写法,要加在最后面。